package com.ww.springboot.boot.algorithm.leetcode1;

/**
 * 描述：
 * 给定两个整数 a 和 b ，返回 任意 字符串 s ，要求满足：
 * <p>
 * s 的长度为 a + b，且正好包含 a 个 'a' 字母与 b 个 'b' 字母；
 * 子串 'aaa' 没有出现在 s 中；
 * 子串 'bbb' 没有出现在 s 中。
 * <p>
 * <p>
 * 限制:
 * 0 <= a, b <= 100
 * 对于给定的 a 和 b，保证存在满足要求的 s
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/string-without-aaa-or-bbb
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author 🧑 ‍wanwei
 * @since 2023-01-12 15:35
 */
public class CP984 {
    public static void main(String[] args) {
        //如果一定满足的话 那就判断a b 谁更大 优选分配大值 每次都判断末尾两个字符串是否重复 重复的话 就换字符
        //2x+3 >= y
        int a = 2;
        int b = 1;

        System.out.println(strWithout3a3b(a, b));
    }

    public static String strWithout3a3b(int a, int b) {
        StringBuilder sb = new StringBuilder();

        while (a > 0 || b > 0) {
            if (sb.length() >= 2) {
                String ss = sb.substring(sb.length() - 2);
                if (ss.equals("aa")) {
                    sb.append("b");
                    b -=1;
                } else if (ss.equals("bb")) {
                    sb.append("a");
                    a -=1;
                }
            }
            if(a== 0 && b == 0){
                return sb.toString();
            }
            if(a>=b){
                a -=1;
                sb.append("a");
            }else {
                sb.append("b");
                b -=1;
            }
        }
        return sb.toString();
    }
}
